package com.me.study.designPatterns.Strategy;

import org.junit.Test;

/**
 * <pre>策略模式：一个顶级的策略抽象，N个具体的策略实现，一个策略的封装对象(上下文对象，解耦)</pre>
 *
 * 优点：<p>
 *     1，可以自由切换算法<p>
 *     2，避免多重条件判断，策略家族只提供算法，具体的调用交给其他模块决定<p>
 *     3，扩展性强<p>
 *
 * <pre>TODO 和代理模式的最大区别就是 封装类没有实现策略接口，只是持有策略引用</pre>
 *
 * @author ME
 * @date   2019/4/20
 */
public class TestStrategy {

    @Test
    public void TestDecorator() {
        // 声明具体策略
        Strategy strategy = new Kits1();
        // 声明上下文对象
        Context context = new Context(strategy);
        // 执行封装后的策略
        context.doAnything();
    }
}
